package py.fpuna.ii.electiva2.dto;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import py.fpuna.ii.electiva2.entity.Compra;
import py.fpuna.ii.electiva2.entity.Producto;
import py.fpuna.ii.electiva2.entity.Venta;

/**
 *
 * @author lizg
 */
public class ProductoDTO {
    
    private Integer prodCodigo;
    private String prodDescripcion;
    private Integer prodCantidad;
    private Integer prodPrecioCompra;
    private Integer prodPrecioVenta;
    private Collection<CompraDTO> compraCollection = new ArrayList<CompraDTO>();
    private ProveedorDTO prodProveedor;
    private Collection<VentaDTO> ventaCollection = new ArrayList<VentaDTO>();

    public ProductoDTO() {
    }

    public ProductoDTO(Integer prodCodigo) {
        this.prodCodigo = prodCodigo;
    }

    public ProductoDTO(Integer prodCodigo, String prodDescripcion) {
        this.prodCodigo = prodCodigo;
        this.prodDescripcion = prodDescripcion;
    }

    public ProductoDTO(Integer prodCodigo, String prodDescripcion, Integer prodCantidad, Integer prodPrecioCompra, Integer prodPrecioVenta, ProveedorDTO prodProveedor) {
        this.prodCodigo = prodCodigo;
        this.prodDescripcion = prodDescripcion;
        this.prodCantidad = prodCantidad;
        this.prodPrecioCompra = prodPrecioCompra;
        this.prodPrecioVenta = prodPrecioVenta;
        this.prodProveedor = prodProveedor;
    }

    public Integer getProdCodigo() {
        return prodCodigo;
    }

    public void setProdCodigo(Integer prodCodigo) {
        this.prodCodigo = prodCodigo;
    }

    public String getProdDescripcion() {
        return prodDescripcion;
    }

    public void setProdDescripcion(String prodDescripcion) {
        this.prodDescripcion = prodDescripcion;
    }

    public Integer getProdCantidad() {
        return prodCantidad;
    }

    public void setProdCantidad(Integer prodCantidad) {
        this.prodCantidad = prodCantidad;
    }

    public Integer getProdPrecioCompra() {
        return prodPrecioCompra;
    }

    public void setProdPrecioCompra(Integer prodPrecioCompra) {
        this.prodPrecioCompra = prodPrecioCompra;
    }

    public Integer getProdPrecioVenta() {
        return prodPrecioVenta;
    }

    public void setProdPrecioVenta(Integer prodPrecioVenta) {
        this.prodPrecioVenta = prodPrecioVenta;
    }

    public Collection<CompraDTO> getCompraCollection() {
        return compraCollection;
    }

    public void setCompraCollection(Collection<CompraDTO> compraCollection) {
        this.compraCollection = compraCollection;
    }

    public ProveedorDTO getProdProveedor() {
        return prodProveedor;
    }

    public void setProdProveedor(ProveedorDTO prodProveedor) {
        this.prodProveedor = prodProveedor;
    }

    public Collection<VentaDTO> getVentaCollection() {
        return ventaCollection;
    }

    public void setVentaCollection(Collection<VentaDTO> ventaCollection) {
        this.ventaCollection = ventaCollection;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (prodCodigo != null ? prodCodigo.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof ProductoDTO)) {
            return false;
        }
        ProductoDTO other = (ProductoDTO) object;
        if ((this.prodCodigo == null && other.prodCodigo != null) || (this.prodCodigo != null && !this.prodCodigo.equals(other.prodCodigo))) {
            return false;
        }
        return true;
    }


    /**
     * convierte un DTO en una Entidad
     * @return entidad Producto
     */
    public Producto toEntity(){

        Producto prodE = new Producto();
        prodE.setProdCodigo(this.getProdCodigo());
        prodE.setProdCantidad(this.getProdCantidad());
        prodE.setProdDescripcion(this.getProdDescripcion());
        prodE.setProdPrecioCompra(this.getProdPrecioCompra());
        prodE.setProdPrecioVenta(this.getProdPrecioVenta());

        prodE.setProdProveedor(this.getProdProveedor().toEntity());

        List <Compra> listCompra = new ArrayList<Compra>();
        Iterator <CompraDTO> itCompra = this.getCompraCollection().iterator();
        while(itCompra.hasNext()){
            listCompra.add(itCompra.next().toEntity());
        }
        prodE.setCompraCollection(listCompra);

        List <Venta> listVenta = new ArrayList<Venta>();
        Iterator <VentaDTO> itVenta = this.getVentaCollection().iterator();
        while(itVenta.hasNext()){
            listVenta.add(itVenta.next().toEntity());
        }
        prodE.setVentaCollection(null);
        
        return prodE;
    }


}
